#================================================
# 永続化レイヤ：支出項目
#================================================
require 'rubygems'
require 'dm-core'


class Outgoing
  include DataMapper::Resource
  
  #==== データ構造設定
  property :id, Integer, :serial=>true  # 一意の登録ID
  property :userId, Integer            # 登録ユーザ識別子
  property :budgetId, Integer          # 支出が対応する予算項目識別子
  property :name, String                # 支出項目名
  property :value, Integer              # 支出金額
  property :year, Integer               # 年
  property :month, Integer              # 月
  property :day, Integer                # 日

  # 指定したユーザの、指定した年・月に対応する支出項目一覧を返す。該当するデータがなければ空リストを返す。
  # @param {int} userId 取得対象ユーザ識別子。非null。
  # @param {int} year 取得対象年。非null。
  # @param {int} month 取得対象月。非null。
  # @return {Budget[]} 取得したリスト。非null。
  def Outgoing.getList(userId, year, month)
    return Outgoing.all(:order =>[:id.asc] , :userId => userId, :year => year, :month => month)
  end
  
  # 新しい支出項目を追加する。
  # @param {int} userId 項目を追加するユーザの識別子
  # @param {int} budgetId 支出対象の予算項目識別子
  # @param {int} year 支出年
  # @param {int} month 支出月
  # @param {int} day 支出日
  # @param {String} name 追加する項目の表示名。非null。非空文字列。
  # @param {int} value 追加する項目の予算金額。
  def Outgoing.add(userId, budgetId, year, month, day, name, value)
    item = Outgoing.new()
    item.attributes = {:userId => userId, :budgetId => budgetId, :year => year, :month => month, :day => day, :name => name, :value=>value}
    item.save()
  end
  
  # 指定した予算項目を削除する
  # @param {int} id 削除対象項目の識別子。対応するデータがなければ何もしない。
  def Outgoing.remove(id)
    outgoing = Outgoing.get(id)
    outgoing.destloy()
  end
end
